protocollo per trasmissioni punto-punto
(Point-to-Point Protocol)
|
Un protocollo che consente di connettere un computer a Internet via linea
telefonica commutata, mantenendo gran parte delle prerogative che si
avrebbero con un collegamento diretto. Tra le più importanti di queste
prerogative abbiamo la possibilità di usare un browser Web, come Mosaic,
Netscape Navigator o Internet Explorer.
Il PPP viene tipicamente considerato migliore dello SLIP (Serial Line
Internet Protocol) poiché, a differenza di questÆultimo, esegue la
correzione automatica degli errori, la compressione dei dati trasmessi,
lÆautenticazione della password e assicura un miglior rendimento teorico
(non sempre realizzato nella realtà). Qualsiasi computer che disponga di
un numero IP può connettersi a Internet usando modem ad alta velocità. PPP
è in grado di iniziare e terminare una sessione, come pure interrompere
una chiamata e richiamare lo stesso numero nel caso in cui la linea sia
particolarmente disturbata (questa funzione deve essere attivata dal
particolare programma usato per eseguire la chiamata via modem).
Il PPP incapsula i comuni protocolli di livello rete (terzo livello OSI)
allÆinterno di pacchetti specializzati. Due esempi in questo senso sono il
IPCP (IP su PPP) e il IPXCP (lÆIPX su PPP). Può essere utilizzato come
sostituto del driver di rete così che gli utenti remoti possano collegarsi
alla LAN come se fossero in locale. I protocolli usati per lÆautenticazio
ne della password sono il Password Authentication Protocol (PAP) e il
Challenge Handshake Authentication Protocol (CHAP). Le specifiche del
protocollo sono contenute nellÆRFC 1661 (che rende obsolela lÆRFC 1548).
Spiegazione dettagliata:
PPP (Point-to-Point Protocol)
Nato nel dicembre 1993 e perfezionano nel luglio 1994 per iniziativa di
William Allen Simpson (autodefinitosi sognatore ad occhi aperti), il PPP è
il più largamente usato tra i protocolli Internet visto che costituisce lo
strumento principe per accedere alla Rete per mezzo di un modem. Esso
rappresenta un vettore per altri protocolli che, lasciati a se stessi, non
potrebbero viaggiare su una linea punto-punto, vale a dire una linea
telefonica o qualsiasi altra connessione su lunga distanza che veda ai
propri estremi un solo destinatario e un solo mittente. Nella sua versione
nativa, il protocollo TCP/IP funziona solamente in rete locale e necessita
un vettore per muoversi su una rete geografica. Quando ci colleghiamo da
casa, da un albergo o anche dallÆufficio mediante una linea a lunga
distanza, lÆunico punto di contatto possibile con il sistema allÆaltro
capo è il modem oppure un dispositivo analogo (come unÆinterfaccia ISDN)
e dobbiamo dipendere da questo per inviare le nostre richieste su Internet
e ricevere le risposte. AllÆaltro capo della linea cÆè un sistema che
funge da intermediario tra noi e la rete e che può essere un altro
computer oppure un router.
Il PPP è progettato per veicolare numerosi protocolli su una sola linea,
il più comune tra questi è naturalmente lÆIntenet Protocol (IP) il quale
a sua volta funge da vettore per altri protocolli applicativi di grande
interesse come lÆHTTP (HyperText Transfer Protocol) per la consultazione
di pagine Web, lÆFTP (File Transfer Protocol) per il trasferimento di
file a distanza, lÆSMTP (Simple Mail Transfer Protocol) per lÆinivio dei
messaggi di posta elettronica, il POP3 (Post Office Protocol) per la copia
in locale dei messaggi presenti nella nostra casella postale, lÆNNTP (
Network News Transfer Protocol) per la consultazione di newsgroup e
qualsiasi altro protocollo sia utile durante una sessione di collegamento
con Internet. Il PPP li contiene tutti come una sorta di busta in cui
sÆinseriscono altre buste per spedirle a un singolo destinatario. ╚ come
raccogliere allÆufficio posta tutte le missive interne destinate a una
filiale e inviarle allÆufficio posta allÆaltro estremo usando un singolo
pacco. LÆufficio posta della filiale aprirà il pacco e distribuirà le
lettere ai singoli destinatari, restituendoci un secondo pacco con le
risposte.
Il PPP ha una missione è triplice. Deve incapsulare i pacchetti generati
dagli altri protocolli (datagrammi) allÆinterno di un singolo pacchetto.
Deve attivare la connessione con il sistema remoto, configurarla e
collaudarla. Deve disporre degli strumenti per controllare al proprio
interno il flusso di tutti gli altri protocolli.
Il Link Control Protocol
La primissima fase dÆintervento del PPP è nel creare la connessione con
il sistema remoto. Ogni volta che ci si collega con una macchina distante
è necessario negoziare i parametri di lavoro che verranno usati nel corso
della connessione. Questo viene fatto in primo luogo dal modem che si
accorda con il modem allÆaltro estremo su quale sarà la velocità di
trasferimento e la compressione dei dati con correzione di errore da
eseguire a livello fisico tra i due apparecchi. Tale prima fase rimane del
tutto trasparente al PPP. Una volta che i modem hanno instaurato il legame
fisico, i due sistemi si possono parlare e a questo punto devono mettersi
dÆaccordo su quale formato dÆincapsulamento utilizzare, sulla dimensione
da assegnare ai pacchetti in transito e sulle modalità per porre fine al
collegamento una volta che la sessione sia terminata.
Tale negoziato è affidato a un protocollo specializzato allÆinterno di
PPP, che si chiama Link Control Protocol. QuestÆultimo è responsabile per
identificare qualsiasi errore nella connessione e per assicurare che le
due macchine parlino la medesima lingua. Durante questa fase preliminare,
inoltre, si possono eseguire eventuali operazioni di autenticazione del
chiamante attraverso un altro protocollo specializzato, che può essere il
CHAP (Challenge Handshake Authentication Protocol) oppure il PAP (Password
Authentication Protocol). ╚ in Link Control Protocol che si accorge se la
connessione è venuta a mancare oppure se sta funzionando male per qualche
difetto fisico e che segnala la cosa ai due computer interessati dal
collegamento.
Gli NCP tutto fare
Una volta che la connessione è stata attivata, i due computer sono pronti
a conversare ma non hanno ancora deciso che lingua utilizzare.
Probabilmente useranno il protocollo IP, ma prima devono attivare tutti
quei meccanismi che permetteranno dÆincapsulare le trame IP nei pacchetti
PPP senza che lÆIP se ne accorga. Uno di questi gradini preliminari è
lÆassegnazione dellÆindirizzo di rete. Lo standard vuole che tutte le
macchine collegate a Internet per scopi di navigazione dispongano di un
indirizzo IP univoco in tutto il mondo. Tale indirizzo serve per
identificare il mittente delle richieste e per sapere dove inviare le
risposte. Viene assegnato da enti internazionali che tengono un registro
di tutti gli indirizzi distribuiti. Naturalmente non è molto pratico che
ogni singolo navigatore Internet espleti le pratiche burocratiche per
richiederne uno proprio, anche perché una delle condizioni per
lÆassegnazione di questi indirizzi è che la macchina su cui verrà
utilizzato sia collegata a Internet in modo permanente, il che non
coincide con la nostra esigenza di usare il PPP per accedere alla Rete via
modem in modo saltuario. La soluzione consiste nellÆaffidare un gruppo
dÆindirizzi a società che poi li distribuiscono ai propri utenti. Un
esempio classico è quello degli Internet Service Provider che amministrano
questi indirizzi fra tutti i propri iscritti. Tuttavia, lÆISP ha bisogno
di un sistema automatico per eseguire questa assegnazione: non è molto
pratico affidare un indirizzo a ciascun abbonato e poi tenerne una
registrazione puntuale. Inoltre lÆabbonato si collega solo in certe ore
del giorno e sarebbe uno spreco riservargli un indirizzo a tempo pieno.
Infine lÆabbonato potrebbe cambiare provider e continuare a usare
lÆindirizzo vecchio con il nuovo provider provocando problemi di
configurazione per il nuovo e di approvvigionamento dÆindirizzi per il
vecchio.
La soluzione consiste nellÆassegnare dinamicamente un numero IP al
momento della connessione. Questo lavoro viene svolto dal Network Control
Protocol, il quale si occupa anche di selezionate anche qualsiasi altro
protocollo rete si debba utilizzare sulla connessione in aggiunta allÆIP
(ad esempio lÆIPX). Esiste in effetti unÆintera famiglia di NCP,
ciascuno dedicato a uno scopo specifico e lÆincapsulamento non si limita
al protocollo IP, ma abbraccia anche IPX e svariati altri protocolli
proprietari, tra cui quelli di Xerox, Banyan, Apple, Digital Equipment,
IBM SNA e altri ancora (vedi lÆRFC 1700 o STD 2).
LÆNCP per protocollo IP usa a sua volta protocollo dedicato, lÆIPCP (IP
Control Protocol), che assomiglia allÆLCP ma ha la prerogativa abilitare,
disabilitare e configurare i moduli IP a entrambi gli estremi della linea.
╚ questo il protocollo che negozia tutti i parametri specifici di questo
ambiente, come la compressione IP e TCP e lÆassegnazione automatica
dellÆindirizzo alla stazione remota. Inoltre lÆIPCP blocca il flusso dei
pacchetti IP fino a quando la connessione non è stata instaurata per
intero, comprese le eventuali fasi di autenticazione del chiamante, e fa
in modo che nel campo dati del PPP non entrino più informazioni di quelle
che ci stanno e impone la frammentazione delle stesse in caso contrario.
Il protocollo che svolge funzioni analoghe per IPX si chiama IPXCP.
Facilità di configurazione
Dovendo essere usato da persone non esperte, il PPP è concepito per
semplificare il più possibile le modalità di collegamento. I parametri
impostati per difetto (default) sono idonei per la maggior parte delle
connessioni e le eventuali eccezioni vengono risolte automaticamente tra
le due macchine (definite peer o pari nel linguaggio tecnico) senza
intervento umano. Là dove il protocollo LCP riesce a eseguire solo una
negoziazione parziale, entrano in gioco uno o più NCP per sistemare il
resto. Di fatto è possibile usare qualsiasi tipo di connessione remota,
non solo il modem. Esistono infatti versioni del protocollo PPP progettate
per funzionare su linea ISDN, su rete X.25 e su fibra ottica ad alta
velocità.
Il formato della trama
Per costruire il proprio pacchetto dÆinformazioni, PPP sÆispira a un
vecchio protocollo, molto conosciuto nelle reti di grandi sistemi e nelle
reti pubbliche: HLDC (High-Level Data Link Control). Si tratta di un
protocollo nato per le connessioni sincrone (linee dedicate) perciò
presenta caratteristiche bit-oriented, tuttavia PPP usa la trama a proprio
modo e può quindi funzionare sia come protocollo sincrono bit-oriented sia
come protocollo byte-oriented per linee asincrone, usando 8 bit di dati e
nessuna parità (lÆimpostazione classica della porta seriale).
La prima parte della trama contiene un flag (segnalatore) che ha un valore
sempre fisso (7E espresso in cifre esadecimali), un indirizzo iniziale
(con valore fisso esadecimale FF) e un campo di controllo (esadecimale
03). Queste parti sono invariabili e identificano il tipo di pacchetto.
Segue immediatamente dopo lÆindicazione del tipo di protocollo in uso.
AllÆinizio della sessione il valore di questo campo sarà 0021 per
indicare che si sta usando il Link Control Protocol per negoziare i primi
parametri di connessione. Subito dopo subentra lÆNCP (8021) e
lÆeventuale protocollo di autenticazione: PAP (C023) o CHAP (C223). Nel
caso si voglia mantenere sotto controllo la qualità del collegamento è
possibile ricorrere a un altro protocollo chiamato Link Quality Report che
cÆinforma su quante informazioni da noi trasmesse sono andate perdute
lungo la linea. Una volta terminati questi preamboli, possiamo chiamare in
causa il protocollo di trasporto vero e proprio che sarà IP, TCP o altro.
Segue un campo dedicato ai dati (cioè al datagramma IP che viene
incapsulato nel pacchetto PPP) e che corrisponde, come dimensione massima,
alla capienza di una trama Ethernet. Non a caso Internet è nata proprio
usando Ethernet tra i suoi fondamenti primari.
Il pacchetto PPP si chiude con la classica sequenza di verifica (Frame
Check Sequence) calcolata sullÆintera trama, compreso il campo indirizzo
e il campo di controllo iniziali. Segue un altro flag che separa la trama
corrente da quella successiva.
Caratteri speciali
Come tutti i protocolli asincroni byte-oriented, anche PPP usa alcuni
caratteri speciali per regolare lo scambio di dati tra le due macchine. Il
più importante fra questi è il carattere 7E (flag) usato come
riconoscimento dellÆinizio e della fine della trama. Grazie alla sua
presenza non cÆè bisogno di mantenere i due sistemi sincronizzati tra di
loro attraverso qualche congegno di temporizzazione: basta che il
destinatario resti in ascolto del carattere 7E (valore decimale126 -
carattere ASCII Ç tilde) per determinare i confini del pacchetto. In
virtù di questo fatto, come in tutti i protocolli di tipo byte-oriented,
il medesimo carattere non può essere utilizzato allÆinterno del campo
dati perché provocherebbe lÆinterruzione prematura della trasmissione.
DÆaltro canto, rispettare questo limite equivarrebbe a impedire la
trasmissione di file binari, cioè i file di programma, che possono
contenere qualsiasi sequenza di bit, incluso 7E, e che costituiscono una
delle risorse più interessanti per navigatori Internet (pensiamo ai vari
shareware, ai driver, agli aggiornamenti software gratuiti). La soluzione
consiste nellÆistruire il protocollo PPP di ñsaltare" (escape) il
carattere quando lo incontra allÆinterno del campo dati. Ma poiché il
computer non ha altro modo per sapere quali siano i confini del campo dati
se non proprio attendere lÆarrivo del carattere 7E, si richiede la
sostituzione di tutti i caratteri 7E contenuti nel campo dati con una
coppia di caratteri alternativa, ma riconoscibile. A questo si arriva
usando un altro carattere speciale chiamato ñescape" che si scrive 7D
(valore decimale 125 - carattere ASCII } graffa chiusa) che serve
segnalare che il carattere immediatamente successivo non è ciò che sembra,
bensì costituisce in realtà la trasformazione di un carattere precedente
che non poteva essere trasmesso nella sua forma originale.
Quando la macchina in ricezione incontra il carattere 7D, sa che deve
elaborare quello successivo e recuperare il carattere originale.
LÆelaborazione consiste nel prendere il sesto bit del carattere in
questione e complementarlo (trasformarlo in 0 nel caso sia un 1 oppure
viceversa). Facciamo un esempio prendendo appunto il carattere di flag 7E
che scritto in notazione binaria diventa 0111 1111, cambiamo il suo sesto
bit e otteniamo questa nuova sequenza: 0101 1111 che corrisponde alla
notazione esadecimale 5D. In trasmissione, ogni volta che nel campo dati
compare 7E, il protocollo sostituirà automaticamente la coppia di
caratteri 7D,5D. AllÆaltro capo, il protocollo di ricezione eseguirà
Æoperazione inversa 7D,5D = 7E. Questa regola vale per qualsiasi c
arattere speciale che debba filtrare attraverso le maglie dei vari
protocolli in gioco senza provocare conseguenze. Prendiamo lÆesempio di
un file che contenga il carattere 7D (cioè il carattere di escape).
Applichiamo lo stesso sistema e perciò avremo una sequenza 7D,5D = 7D.
Tutti i caratteri che hanno un valore esadecimale inferiore a 20 vengono
trattati nello stesso modo. Infatti nel codice ASCII i primi trentadue
caratteri (da 00 a 20 esadecimale) possono rappresentare comandi
interpretabili dal modem oppure dalla stampante. In questa regione
troviamo infatti il comando di avanzamento riga, di avanzamento pagina, di
ritorno a capo, di cancellazione allÆindietro e altro ancora. Il
meccanismo di filtraggio è sempre il medesimo: li si fa precedere dal co
dice 7D seguito da un codice esadecimale calcolato trasformando il sesto
bit del numero originale. Perché il sesto bit? Perché 0010 0000
corrisponde al numero esadecimale 20, cioè alla soglia dalla quale
vogliamo cominciare ad applicare questo filtro, e se prendiamo questo
numero e lo sovrapponiamo a un qualsiasi altro numero esadecimale con
unÆoperazione di OR esclusivo, vediamo che lÆeffetto prodotto è una
complementazione del sesto bit a partire da destra. Se già sappiamo che
alcuni dei primi 32 caratteri ASCII sono innocui, possiamo usare il Link
Control Protocol per specificare quali di questi caratteri lasciar
transitare senza codifica di escape.
In fase di trasmissione su linea telefonica, di solito vengono soppressi i
campi indirizzo e controllo, che sono sempre uguali e possono essere
aggiunti nuovamente allÆaltro estremo quando la trama viene ricostruita
dalla stazione ricevente. La decisione di comprimere lÆintestazione della
trama può anche essere unilaterale: il mittente tralascia di spedire il
campo indirizzo e controllo e il ricevente legge la trama e, non
incontrando i valori FF e 03, suppone che siano stati omessi, perciò li
aggiunge di propria iniziativa.
Le specifiche primarie del protocollo PPP sono contenute nellÆRFC 1661,
ma più di una dozzina di altre RFC collegate descrivono le modalità per
incapsulare i diversi protocolli nei pacchetti PPP e descrivono in che
modo eseguire il negoziato iniziale e tenere sotto controllo la qualità
della linea. Tra le RFC accessorie merita attenzione la 1334 dedicata
allÆautenticazione degli accessi.
Controllo degli accessi
Abbiamo visto che, una volta completata la predisposizione della
connessione attraverso LCP, capita sovente che il sistema chieda
unÆidentificazione. Esistono due modalità per fornire nome e password. La
prima consiste nel protocollo PAP (Password Authentication Protocol) il
quale attende che la connessione sia attiva dopo di che continua a inviare
la coppia ñnome/password" fino a quando il terminale remoto risponde
convalidando lÆaccesso oppure negandolo e terminando la connessione.
Questo non è un approccio molto sicuro visto che la password viaggia sulla
rete in chiaro e chiunque potrebbe intercettarla. Inoltre il sistema può
essere bombardato da ripetuti tentativi di accesso da parte di un utente
esterno che prova numerose combinazioni fino a quando ne azzecca una. ╚
lÆutente in remoto che ha la piena discrezione sulla frequenza e la
durata dei propri tentativi di accesso.
Il protocollo CHAP (Challenge Handshake Authentication Protocol) è più
robusto poiché verifica periodicamente lÆidentità del sistema remoto
usando un sistema di handshake (sincronizzazione) a tre vie. LÆoperazione
viene seguita nel momento in cui la connessione è attivata e può essere
ripetuta dopo. Non appena la connessione è completa, CHAP manda un
messaggio di altolà (challenge) al sistema dellÆutente il quale esegue un
calcolo sul messaggio ricevuto basandosi su un matrice in proprio possesso
e spedisce la risposta al sistema centrale. QuestÆultimo, che nel fra
ttempo ha eseguito il medesimo calcolo, confronta i risultati e in caso
affermativo abilita lÆaccesso, oppure lo nega. Il calcolo si basa su un
sistema one-way hash.
Ogni volta che invia un altolà (challenge), il sistema autenticatore
inserisce un numero progressivo allÆinterno del pacchetto, numero che
viene incrementato a ogni tentativo di connessione seguente.
Contemporaneamente modifica anche il contenuto del pacchetto di challenge
così da riportare sotto il proprio controllo la frequenza e la durata
delle operazioni di autenticazione e riducendo il rischio di attacchi. Per
funzionare, questo meccanismo richiede lÆesistenza di un ñsegreto" noto
unicamente al sistema centrale (autenticatore) e al sistema remoto (quello
che tenta lÆaccesso). Segreto che non può essere trasferito sulla rete,
ma deve essere recapitato in modo sicuro per vie diverse. La lunghezza del
segreto deve essere di almeno 8 bit, ma la sicurezza aumenta in
proporzione alla lunghezza e negli Stati Uniti la maggiore protezione oggi
raggiungibile è con 128 bit. Il sistema one-way hash viene scelto in modo
che sia praticamente impossibile risalire al segreto partendo
semplicemente dal messaggio di challenge e dalla risposta. Il messaggio di
challenge deve essere unico nel suo genere (per consentire il login da
qualsiasi parte del mondo) e imprevedibile. Se fosse prevedibile,
lÆintruso potrebbe intrufolarsi fornendo uno dei challenge precedentemente
intercettati.
La qualità del sistema di protezione dipende in larga misura
dallÆapplicazione che ne fa uso. Il protocollo PPP fornisce unicamente
gli strumenti per trasportare le informazioni, mentre tutte le funzioni di
autenticazione vengono svolte altrove, con criteri diversi a seconda dei
Paesi in cui si svolgono. Ad esempio, la tecnologia one-way hash 128
esistente negli USA non può essere esportata in Europa in quanto
ñmunizione" protetta dalla legislazione statunitense. Esistono soluzioni
a 128 bit europee, ma non sono disponibili a tutti.
Gli standard pubblicati su PPP
Documenti primari
RFC 1661 standard primario aggiornato
RFC 1548 standard obsoleto sostituito dalla RFC 1661
RFC 1549 formattazione delle trame PPP in trame HDLC
RFC 1552 ipx su PPP (IPXCP)
RFC 1570 estensioni LCP
RFC 1598 PPP su X.25
RFC 1618 PPP su ISDN
RFC 1619 PPP su SONET/SDH
RFC 1638 PPP Bridging Control Protocol
RFC 1662 altro sulla formattazione di trame PPP in trame HDLC
RFC 1663 trasmissione affidabile dei dati
RFC 1762 DECnet su PPP
RFC 1763 Banyan VINES su PPP
RFC 1764 protocolli Xerox su PPP
RFC 1841 Network Control Protocol con estensioni lan (per router
remoti)
RFC 1877 estensioni ai name address server
RFC 1915 Connection Control Protocol ed Encryption Control Protocol
Documenti collegati
RFC 1332 Network Control Protocol per connessione ip su PPP (IPCP)
RFC 1333 monitoraggio sulla qualità della connessione
RFC 1334 protocolli di autenticazione per PPP (CHAP e PAP)
|
|